
const path = require('path');
const fs = require('fs');
const babel = require("@babel/core");
const t = require("@babel/types");
const parser = require('@babel/parser');
const traverse = require("@babel/traverse").default;

const code = fs.readFileSync(path.join(__dirname, './Demo.jsx')).toString();
var ast = babel.parseSync(code, {
  cwd: path.resolve(__dirname, './'),
  root: path.resolve(__dirname, './'),
  filename: path.resolve(__dirname, 'babel.config.js'),
});
traverse(ast, {
  enter(path) {
    if (path.isIdentifier({ name: "n" })) {
      path.node.name = "x";
    }
  },
  ClassProperty(path) {
    if (path.node.key.name === "state") {
      path.node.key = t.identifier("stateB")
    }
  }
});
console.log(ast);

// const ast = parser.parse(code, {
//   sourceType: "module",
//   plugins: [
//     // enable jsx and flow syntax
//     "jsx",
//     "flow"
//   ]
// });

// traverse(ast, {
//   enter(path) {
//     if (path.isIdentifier({ name: "n" })) {
//       path.node.name = "x";
//     }
//   }
// });